home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Network Supervisor's Toolkit
/
Network Supervisor's Toolkit.iso
/
tools
/
nwtp06
/
ldir.pas
< prev
next >
Wrap
Pascal/Delphi Source File
|
1996-07-10
|
6KB
|
243 lines
program ldir;
{ Testprogram for the nwFile unit / NwTP 0.6 API. (c) 1993,1995, R.Spronk }
{ LDIR is an alternative for NDIR, showing the use of the
ScanDirectoryEntry function. }
uses nwMisc,nwBindry,nwFile;
Function GetEntryAttributeString(Attr:Longint):string;
Var res:string;
begin
if (Attr and A_DIRECTORY)=0
then res:=' RwSAXHSyTPCDR '
else res:=' -----HSy-P-DR ';
if (Attr and A_HIDDEN)=0 then res[7]:='-';
if (Attr and A_SYSTEM)=0 then begin res[8]:='-';res[9]:='-'; end;
if (Attr and A_RENAME_INHIBIT)=0 then res[14]:='-';
if (Attr and A_DELETE_INHIBIT)=0 then res[13]:='-';
if (Attr and A_PURGE)=0 then res[11]:='-';
if (Attr and A_DIRECTORY)=0
then begin
if ((Attr and A_READ_ONLY)>0) then res[3]:='o';
if (Attr and A_EXECUTE_ONLY)=0 then res[6]:='-';
if (Attr and A_NEEDS_ARCHIVED)=0 then res[5]:='-';
if (Attr and A_SHAREABLE)=0 then res[4]:='-';
if (Attr and A_TRANSACTIONAL)=0 then res[10]:='-';
if (Attr and A_COPY_INHIBIT)=0 then res[12]:='-';
end;
GetEntryAttributeString:=res;
end;
Var DirHandle:Byte;
DirPath:String;
SequenceNumber:Byte;
TrusteeInfo: TtrusteeInformation;
t:Byte;
ObjName:string;
ObjType:word;
ObjId:Longint;
DH,EffRights:byte;
EntryName:string;
SearchFlags:Longint;
EntryId:Longint;
Entry:Tentry;
s,s1:string;
p:byte;
OwnerName:string;
OwnerType:word;
entry2:Tentry;
begin
DirHandle:=0;
if ParamCount>0
then s:=paramStr(1)
else s:='.';
IF NOT GetTrueEntryName(s,DirPath)
then begin
writeln('Error resolving given filename (err: 0-',nwfile.result,')');
halt(1);
end;
if pos(':',DirPath)=2
then begin
writeln('You cannot use this program on a local drive.');
halt(1);
end;
{ ok. Try to separate EntryName from path }
p:=ord(DirPath[0]);
while (p>0) and (DirPath[p]<>'\') do dec(p);
s:=copy(DirPath,p+1,255);
if (pos('.',s)>0) or (pos('*',s)>0) or (pos('?',s)>0)
then begin { last part is definately a filename }
EntryName:=s;
DirPath[0]:=chr(p-1);
IF NOT AllocTemporaryDirHandle(31,0,DirPath,DH,EffRights)
then begin
writeln('Could not locate directory (err: 1-',nwfile.result,')');
halt(1);
end;
end
else begin
IF AllocTemporaryDirHandle(31,0,DirPath,DH,EffRights) { assume it's a path}
then begin
{ whole thing appears to be a path.. }
EntryName:='*';
end
else begin
{ whoops.. not a path, but a filename without an extension }
EntryName:=s;
DirPath[0]:=chr(p-1);
IF NOT AllocTemporaryDirHandle(31,0,DirPath,DH,EffRights)
then begin
writeln('Could not locate directory (err: 2-',nwfile.result,')');
halt(1);
end;
end;
end;
writeln('EntryName Size Flags EntryID Creation Owner');
writeln('------------+---------+---------------+--------+---------------+----------');
SearchFlags:=$ef; { all NON directories, i.e. all files }
EntryId:=-1;
While ScanDirectoryEntry(DH,EntryName,SearchFlags,EntryID,Entry)
do begin
s:=entry.EntryName;
p:=pos('.',s);
if p=0
then begin
s:=s+' ';
s[0]:=#12;
end
else begin
s1:=copy(s,1,p-1)+' ';
s1[0]:=#8;
s:=s1+copy(s,p,255)+' ';
s[0]:=#12;
end;
write(s);
write(entry.FileSize:10);
s:=GetEntryAttributeString(entry.Attributes);
write(' F',s);
write(HexStr(entryId,8));
NovTime2String(entry.CreationTime,s);
delete(s,1,5);dec(s[0],3);
delete(s,8,2);
s[3]:='-';s[7]:='-';
write(' ',s);
GetBinderyObjectName(entry.OwnerId,OwnerName,OwnerType);
s:=ownerName+' ';
s[0]:=#10; write(' ',s);
writeln;
end;
if nwFile.result<>$FF { no more matching entries }
then writeln('Error scanning directory information (err : 3-',nwfile.result,')');
{-- As an extra gimmick: if you DEFINE ShowScan, salvagable files will
also be shown.. }
{$IFDEF ShowScan}
{ Scan salvagable files.. }
EntryId:=-1;
WHILE ScanSalvagableFiles(DH,EntryId,Entry)
do begin
s:=entry.EntryName;
p:=pos('.',s);
if p=0
then begin
s:=s+' ';
s[0]:=#12;
end
else begin
s1:=copy(s,1,p-1)+' ';
s1[0]:=#8;
s:=s1+copy(s,p,255)+' ';
s[0]:=#12;
end;
write(s);
write(entry.FileSize:10);
s:=GetEntryAttributeString(entry.Attributes);
write(' S',s);
write(HexStr(entryId,8));
NovTime2String(entry.CreationTime,s);
delete(s,1,5);dec(s[0],3);
delete(s,8,2);
s[3]:='-';s[7]:='-';
write(' ',s);
GetBinderyObjectName(entry.OwnerId,OwnerName,OwnerType);
s:=ownerName+' ';
s[0]:=#10; write(' ',s);
writeln;
end;
If nwFile.result<>$FF { normal iteration end }
then writeln('Error using ScanSalvagableFiles.');
{$ENDIF}
{------------------ show subdir info }
SearchFlags:=$3f;
EntryId:=-1;
While ScanDirectoryEntry(DH,EntryName,SearchFlags,EntryID,Entry)
do begin
s:=entry.EntryName;
p:=pos('.',s);
if p=0
then begin
s:=s+' ';
s[0]:=#11;
end
else begin
delete(s,p,1);
s:=s+' ';
s[0]:=#11;
end;
write('\',s);
write(0:10); { filesize }
s:=GetEntryAttributeString(entry.Attributes);
write(' D',s);
write(HexStr(entryId,8));
NovTime2String(entry.CreationTime,s);
delete(s,1,5);dec(s[0],3);
delete(s,8,2);
s[3]:='-';s[7]:='-';
write(' ',s);
GetBinderyObjectName(entry.OwnerId,OwnerName,OwnerType);
s:=ownerName+' ';
s[0]:=#12; write(' ',s);
writeln;
end;
if nwFile.result<>$FF { no more matching entries }
then writeln('Error scanning directory information (err : 4-',nwfile.result,')');
DeallocateDirHandle(DH);
end.